import { ref, reactive } from 'vue'

// 数据看板查询条件模型（对应后端DataPanelSearchDTO）
export const useDataPanelSearchModel = () => {
  const searchParams = reactive({
    year: new Date().getFullYear(), // 默认当前年份
    gender: null, // 性别，默认为null表示全部
    gradeId: null, // 年级ID，供校级管理员使用
    stage: null, // 学段，供教育局管理员使用
    clazzId: null, // 班级ID，用于校级管理员筛选
    districtId: null // 区域ID，供教育局管理员使用
  })

  return {
    searchParams
  }
}

// 数据看板响应数据模型（对应后端DataPanelVO）
export const useDataPanelModel = () => {
  const dataPanelData = reactive({
    studentTotalCount: 0, // 学生总人数
    maleCount: 0, // 男生人数
    femaleCount: 0, // 女生人数
    attemptTestCount: 0, // 参加测试的人数
    testItemCount: 0, // 需要进行的测试条目数量
    testItemPassingRate: [], // 体测项合格率详情
    qualifiedCount: 0, // 达标人数
    unQualifiedCount: 0, // 未达标人数
    excellence: 0, // 成绩优秀的人数
    good: 0, // 成绩良好的人数
    qualified: 0, // 成绩合格的人数
    substandard: 0, // 成绩不合格的人数
    recentFiveYearsQualifiedRate: {} // 近五年的体测合格率
  })

  // 加载状态
  const loading = ref(false)
  
  // 重置数据
  const resetData = () => {
    dataPanelData.studentTotalCount = 0
    dataPanelData.maleCount = 0
    dataPanelData.femaleCount = 0
    dataPanelData.attemptTestCount = 0
    dataPanelData.testItemCount = 0
    dataPanelData.testItemPassingRate = []
    dataPanelData.qualifiedCount = 0
    dataPanelData.unQualifiedCount = 0
    dataPanelData.excellence = 0
    dataPanelData.good = 0
    dataPanelData.qualified = 0
    dataPanelData.substandard = 0
    dataPanelData.recentFiveYearsQualifiedRate = {}
  }
  
  // 更新数据
  const updateData = (data) => {
    if (!data) return
    
    Object.keys(dataPanelData).forEach(key => {
      if (data.hasOwnProperty(key)) {
        dataPanelData[key] = data[key]
      }
    })
  }

  return {
    dataPanelData,
    loading,
    resetData,
    updateData
  }
}

// TestItemPassRateDTO 模型示例
// {
//   testItemName: "BMI",
//   passRate: "80%"
// } 